iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0

大家好,我是一名菜鳥工程師,Chris,今天來到第 30 天,Git 指令

無論是個人開發還是團隊,Git 都是一個不可或缺的資源工具,可以幫助管理和協作。以下是一些常用的指令說明

1 安裝 Git

這邊以 Mac 電腦來說明。首先要安裝 homebrew,再透過 homebrew 安裝 Git。具體方法請參考homebrew 文件,這邊就不詳細說明了
https://brew.sh/

2 安裝完 Git 後,需要先配置 Git 的全局設定

- 設置使用者的名稱和電子郵件:

git config --global user.name "你的名稱"
git config --global user.email "你的電子郵件"

- 確認 Git 的設定:確保它們已經正確設置完成:

git config --list

- 初始化一個新的 Git 儲存庫:如果要開始做一個新專案,可以使用指令並初始化一個新的 Git 儲存庫:

git init

- 可以複製現有的 Git 儲存庫:它已經存在在遠端的儲存庫

git clone 遠端儲存庫的URL

3 其他的指令

- 顯示指定檔案的每一行的詳細資訊,包括最後一次修改的提交信息、作者和修改時間:

git blame 檔案名稱

- 重設到前一次提交(取消上一次的提交,但保留更改在工作目錄和暫存區):

git reset HEAD^

- 重設到前兩次提交(取消上兩次的提交,但保留更改在工作目錄和暫存區):

git reset HEAD^^

- 重設到前50次提交(取消前50次的提交,但保留更改在工作目錄和暫存區):

git reset HEAD~50

- 這個模式是預設的。會取消上一次的提交,並將更改移回到工作目錄:

git reset --mixed HEAD^

- 這個模式會取消上一次的提交,但保留更改在暫存區中:

git reset --soft HEAD^

- (要小心使用) 這個模式會取消上一次的提交,同時刪除工作目錄中的更改:

git reset --hard HEAD^

4 製作專案時,會使用到的指令

- 檢查目前代碼的狀態:

git status

- 將目前更改的項目添加到暫存區:

git add 檔案名稱  # 指定某個檔案加到暫存區
git add .       # 將所有更改的檔案加到暫存區
git add --all   # 將所有更改的檔案加到暫存區
git add -A      # 將所有更改的檔案加到暫存區

- 提交更改:

git commit --message "提交的訊息"
git commit -m "提交的訊息"

- 將目錄中的更改回復到和最後一次提交相同的狀態。它可以用來取消未提交的更改:

git restore 檔案名稱  # 恢復特定檔案到最後提交的狀態

- 使用 . 可以一次性的恢復所有檔案:

git restore .   # 恢復所有檔案到最後提交的狀態

- 查看提交紀錄歷史:

git log

5 分支的處理

- 列出所有分支:

git branch

- 建立一個新的分支:

git branch 分支名稱

- 刪除分支:

git branch -d 分支名稱

- 強制刪除分支:

git branch -D 分支名稱

- 切換分支或恢復文件:

git checkout 分支名稱

- 切換分支:

git switch 分支名稱

- 切換到提交名稱:

git switch 提交名稱 --detach

- 合併分支:

git merge 合併的分支名稱

- 合併分支,但強制不使用快進合併(no fast-forward),保留分支的歷史記錄:

git merge 合併的分支名稱 --no-ff

- 合併分支並提供一個自訂的合併訊息:

git merge feature -m "合併分支的訊息"

- 將當前分支的提交移到設定的分支的基礎上,以 main 為範例

git rebase main

- 輕鬆返回到 rebase 前的狀態

git reset ORIG_HEAD

6 分支衝突解決

  • 合併(Merge):
    • merge 會將一個分支的更改合併到另一個分支的操作
    • 可能會有衝突,必須手動解決
git checkout 分支A
git merge 分支B

git add 解决的檔案
git commit -m "解决衝突的說明"
  • 變基(Rebase):
    • rebase 會將一個分支的更改重新基於另一個分支的操作
    • 也可能會有衝突,必須手動解決
git checkout 分支A
git rebase 分支B

git add 解决的檔案

# 接著,可以選擇自己希望的方式執行:
git rebase --continue  # 接受已解决的衝突
git rebase --skip  # 跳過目前衝突,但這會遺失衝突的更改
git rebase --abort  # 放棄變基操作,恢復到變基前的狀態
  • 手動選擇特定版本的檔案:
    • git checkout 可用於手動選擇特定版本的檔案
    • --ours 表示選擇本地版本(目前分支的版本)
    • --theirs 表示選擇另一分支的版本
git checkout --ours img.jpg  # 選擇本地版本(當前分支的版本)的img.jpg

git checkout --theirs img.jpg  # 選擇另一分支的版本的img.jpg

7 遠端儲存庫

- 將本地的 Git 更改推到(上傳)到遠端 Git 儲存庫,讓遠端儲存庫與本地的儲存庫同步:

git push origin 分支名

- 將遠端 Git 儲存庫拉取(下載)最新的更改到本地的儲存庫,讓本地代碼與遠端儲存庫同步:

git pull origin 分支名

總結 : 以上就是關於 Git 指令的說明

完賽心得

很開心自己能參加 IT 鐵人賽 30 天的技術分享,能夠持續不斷的發文,不僅提升自己的技術,也能從中學習到很多知識,這是個難能可貴的機會與挑戰,我達成了呢!!

之後我也會養成發文的習慣,當遇到不熟悉的技術或疑問時,只要透過寫文章,就能進而提升自己,並運用在未來的專案中。

hi, 我是一名工程師,Chris,在前往工程師的路上一起並肩同行吧:> 有任何問題都歡迎提出,謝謝指教~~


上一篇
DAY - 29 Git 與 GitHub 的關係
系列文
前端開發 | 學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言